﻿function isDefined( variable) { return (typeof(window[variable]) != "undefined");}

/**
* Control Genérico Post formulario ajax
*/
function PostFailure() {
    crearAlertaPostFailure($('#msg'));
}
function PostSuccess(ajaxContext) {
    var obj = $.parseJSON(ajaxContext);
    ResultadoAccion(obj);
}
function PostOnComplete() {
}

/** 
* Procesado ResultadoAccion
*/
function ResultadoAccion(resultadoAccion) {
    if (resultadoAccion.operation == "FAIL") {
        //Mostramos mensaje información:
        crearAlertaBasica($('#msg'), resultadoAccion.messages, resultadoAccion.styles);
    } else if (resultadoAccion.operation == "REDIRECTION") {
        //Redirigimos:
        document.location = resultadoAccion.messages;
    } else if (resultadoAccion.operation == "OK") {
        //Mostramos mensaje información:
        crearAlertaBasica($("#msg"), resultadoAccion.messages, resultadoAccion.styles);
    } else if (resultadoAccion.operation == "OK_REDIRECTION") {
        //Mostramos mensaje información:
        crearAlertaBasica($("#msg"), resultadoAccion.messages, resultadoAccion.styles);       
    }
}
function redireccionProgramada(resultadoAccion) {
    document.location = resultadoAccion.destino;
}

/**
* Confirmación Eliminar elemento de GRID
*/
function confirmacionEliminar(link, type, urlPost) {
    return confirmacionDialog(link, "eliminar el " + type, urlPost);
}
/**
* Confirmación Activar elemento de GRID
*/
function confirmacionActivar(link, type, urlPost, dataPost) {
    return confirmacionDialog(link, "activar el " + type, urlPost, dataPost);
}
/**
* Confirmación Desactivar elemento de GRID
*/
function confirmacionDesactivar(link, type, urlPost, dataPost) {
    return confirmacionDialog(link, "desactivar el " + type, urlPost, dataPost);
}


/**
* Lógica de confirmación
*/
function confirmacionDialog(link, type, urlPost, dataPost) {
    var urlDestino = link.href;

    $('h3#TituloConfirmacion').html("Mensaje de confirmación");
    $('p#BodyConfirmacion').html("¿Desea " + type + "?");
    $('a#BotonConfirmacion').attr('onClick', 'confirmDialog("' + urlDestino + '","' + urlPost + '");');
    $('#confirm').modal('show');
    
    //Si hay datapost, lo creamos
        var x;
        var formu = document.createElement("form");
        formu.setAttribute("id", "formPostConfirm");
        for (x in dataPost) {
            var input = document.createElement("input");
            input.setAttribute("type", "hidden");
            input.setAttribute("name", x);
            input.setAttribute("id", x);
            input.setAttribute("value", dataPost[x]);
            formu.appendChild(input);
        }
        console.log(formu);
        document.getElementById("BodyConfirmacion").appendChild(formu);
    
    return false;
}
function cancelDialog() {
    $('#confirm').modal('hide');
}
function confirmDialog(url, urlPost) {
    
    cancelDialog();
    $.get(url, null, function (respuestaSolicitud) {
        ResultadoAccion(respuestaSolicitud);
        
        var dataPost = null;

        if ($('#formPostConfirm').length) {
            dataPost = $('#formPostConfirm').serialize();
        }

        console.log(dataPost);

        $.ajax({
            url: urlPost,
            type: 'POST',
            data: dataPost,
            dataType: "html",
            async: false,
            success: function (result) {
                $("#grid").html(result);
            }
        });
    }, "json");
}


/**
* Lógica de Alertas
*/
function crearAlertaBasica(contenedor, mensaje, tipoAlerta) {

    var cssMensaje = "alert fade in ";
    if (tipoAlerta == "INFORMATION") cssMensaje += "alert-info";
    if (tipoAlerta == "ERROR") cssMensaje += "alert-error";
    if (tipoAlerta == "SUCESFULLY") cssMensaje += "alert-success";
    if (tipoAlerta == "WARNING") cssMensaje += "alert-warning";

    var cadena = "<div class='" + cssMensaje + "'>" +
    "<a class ='close' href ='#' data-dismiss='alert'>x</a>" +
    "<p>" + mensaje + "</p>" +
    "</div>";

    contenedor.html(cadena);

    eval("setTimeout(\"$(\'#msg\').html(\'\')\",10000);");
}
function crearAlertaPostFailure(contenedor) {

    crearAlertaBasica(contenedor, "Se ha perdido la conexión", "ERROR");
}

/**
* Alimentar un DropDownList
*/
function fillDropDownList(dropdownlist, url, data, vaciarDDL) {

    $.get(
        url,
        data,
        function (objRespuesta) {

            //if (vaciarDDL) dropdownlist.remove();

            for (var i = 0; i < objRespuesta.items.length; i++) {
                var cadena = "<option value='" + objRespuesta.items[i].id + "'>" +
                             objRespuesta.items[i].data +
                             "</option>";
                dropdownlist.append(cadena);
            }
        },
        "json");
}

function clearDropDownList(dropdownlist) {

    dropdownlist.html("<option value='-1' selected/>");
}